
#ifndef IReadOnlyCollection_t_h
#define IReadOnlyCollection_t_h

// CSharp includes.
#include <Typedef.h>
#include <Defines.h>
#include <CSharpPropertyMethods.h>

#include <System/Collections/Generic/IEnumerable.h>

namespace Riccsson
{
	namespace System
	{
		namespace Collections
		{
			namespace Generic
			{
				// Summary:
				//     Represents a strongly-typed, read-only collection of elements.
				//
				// Type parameters:
				//   T:
				//     The type of the elements.This type parameter is covariant. That is, you can
				//     use either the type you specified or any type that is more derived. For more
				//     information about covariance and contravariance, see Covariance and Contravariance
				//     in Generics.
				template<typename T> interface IReadOnlyCollection
					: Riccsson::System::Collections::Generic::IEnumerable<T>
				{
					// Summary:
					//     Gets the number of elements in the collection.
					//
					// Returns:
					//     The number of elements in the collection.
					public: virtual PROP3_GET(int, Count) = 0;
					private: PROP3_SET(int, Count) {throw;}
				};
			}
		}
	}
}

#endif